package br.com.cs.pojo.impl;

import br.com.cs.dao.jdbc.LancamentoJDBC;
import br.com.cs.exception.DAOException;
import br.com.cs.exception.PojoException;
import br.com.cs.model.Lancamento;
import br.com.cs.pojo.LancamentoPojo;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class LancamentoPojoImpl implements LancamentoPojo{
    
    private static LancamentoPojoImpl instance = new LancamentoPojoImpl();

    public LancamentoPojoImpl() {
    }
    
    public static LancamentoPojoImpl getInstance(){
        return instance;
    }

    @Override
    public void delete(Lancamento lancamento) throws PojoException {
        try {
            LancamentoJDBC.getInstance().delete(lancamento);
        } catch (DAOException ex) {
            Logger.getLogger(VisitantePojoImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new PojoException("Erro na operação: Remover lancamento: "+lancamento.getDescricao(), "Remover lancamento: "+lancamento.getDescricao()+".", ex);
        }
    }

    @Override
    public List getAll() throws PojoException {
        try {
            return LancamentoJDBC.getInstance().getAll();
        } catch (DAOException ex) {
            Logger.getLogger(VisitantePojoImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new PojoException("Erro na operação: Recuperar lista de lancamento ", "Recuperar lista de lancamento.", ex);
        }
    }

    @Override
    public Lancamento getByPrimaryKey(Integer id) throws PojoException {
        try {
            return LancamentoJDBC.getInstance().getByPrimaryKey(id);
        } catch (DAOException ex) {
            Logger.getLogger(VisitantePojoImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new PojoException("Erro na operação: Recuperar lista de lancamento","Recuperar lista de lancamento.", ex);
        }
    }

    @Override
    public void save(Lancamento lancamento) throws PojoException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public List getByFilter(String filterName, String filterValue) throws PojoException {
        try {
            return LancamentoJDBC.getInstance().getByFilter(filterName, filterValue);
        } catch (DAOException ex) {
            Logger.getLogger(LancamentoPojoImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new PojoException("Erro na operação: ", "Recuperar lancamento por filtro.", ex);
        }
    }
    
}
